home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <sys/types.h>
-
-
- #undef integer /* Silly stdtypes */
- #include "Kernel/h/stdTypes.h"
- #include "Kernel/h/kEvents.h"
- #include "Kernel/h/system.h"
-
- /*
- * QueueTask
- *
- * QueueTask(handler, argument)
- *
- * Puts a task on the queue for later execution by the main loop.
- * This code is unprotected, so it should only be called either at
- * interrupt time or while signals are being held. Handler is the
- * address of the function, and argument is an argument to be passed
- * to the handler (defined as (char *)).
- */
-
- void QueueTask(handler, argument)
- int (*handler)();
- char *argument;
- {
- struct TaskQueue *event;
-
- if ((event = TaskDequeue(&FreeQ)) == NULL) {
- ErrMsg("Out of event list elements. Dropped handler %x.\n", handler);
- return;
- }
- event->handler = handler;
- event->arg = argument;
- enqueue((struct Queue *) &TaskQ, (struct Queue *) event);
- shouldPause = dontPause; /* Make main loop scheduler ignore pause in
- edenPause: A task has arrived on the queue
- so don't pause! */
- }
-